
#ifndef __APR_PRNG_H
#define __APR_PRNG_H

#include <stdint.h>

namespace APRPRNGImplementation { class APRPRNGData; };

/** The local class structure for the APR PRNG, split from the
 * implementation. This is an advantageous structure for library
 * linking, creating an extra layer of indirection at the cost of
 * extra complexity. */
class APRPRNG
{
   public:
      APRPRNG();
      APRPRNG(APRPRNG const&);
      APRPRNG &operator=(APRPRNG const&);
      static void forceDestruction();
      char *getRandomBytes(size_t bytes);
   private:
      /** Data for the implementation. */
      APRPRNGImplementation::APRPRNGData *data;
};

#endif
